Флаги
O D I T S Z A P C * * * ? * *
Команда:
SHL destination,count
Команда SHL сдвигает слово или байт, находящийся по адресу destination, влево на число битовых позиций, определяемое вторым операндом, COUNT. По мере вытеснения битов за левый край операнда destination, справа в освободившиеся биты заносятся нули. Значение CF совпадает со значением бита, который последним был вытеснен за левый край операнда.
Если COUNT не равен 1, то флаг переполнения OF не определен. Если же COUNT равен 1, тогда OF=0, если 2 старших бита исходного значения операнда destination совпадали, иначе OF=1.
Операнды | Такт байты (слова) | Обращения | Байты | Пример |
регистр, 1 | 2 | - | 2 | SHL AL,1 |
регистр, CL | 8 + 4/бит | - | 2 | SHL SI,CL |
память, 1 | 15(23) + EA | 2 | 2-4 | SHL WORD,1 |
память, CL | 20(28)+EA+4/бит | 2 | 2-4 | SHL BYTE,CL |
Примечания:
В качестве операнда COUNT берется обычно значение в регистре CL. Если, однако, Вы хотите осуществить сдвиг лишь на одну позицию, то замените второй операнд (CL) на число 1, как показано выше в первом примере.
Микропроцессоры 80286 и 80386 ограничивают значение COUNT числом 31. Если COUNT больше, чем 31, то эти микропроцессоры используют COUNT MOD 32, чтобы получить новый COUNT в пределах 0-31. Эта верхняя граница имеет своей целью сократить тот период времени, на который будет задерживаться ответ на прерывание из-за ожидания конца выполнения команды.
Несколько команд SHL, использующих 1 в качестве второго операнда, выполняются быстрее и требуют меньшего объема памяти, чем одна команда SHL, использующая CL в качестве операнда COUNT.
Признак переполнения не определен, если операнд COUNT больше 1. Команда SAL, арифметический сдвиг влево, - это та же команда, что и SHL.